之前hook native函数是使用ADBI框架的,但是其平台有限,Android5效果稳定,Android6成功率不高,到Android7就无法使用了。
由于xposed(已支持Android8)也可以Hook native函数,可获取native函数的参数数据,因此想将hook的函数从ADBI框架移植到xposed模块中。但是遇到了一个问题:之前使用ADBI框架获取byte[]类型的参数数据是正常的,但是在xposed中只能获取到地址,一直提示参数为object类型。那么如何在xposed中获得真实数据呢?解决方案参考如下。
如下为ADBI框架中重写的函数,获取byte类型参数a的数据,并写入/sdcard/data.txt中。
1 | void new_hookData(JNIEnv* env, jobject thiz, jbyte *a) { |
如下是xposed中的hook代码:
1 | findAndHookMethod("className",lp.classLoader,"methodName",byte[].class, new hookData()); |
over!